OpenSebJ - Beta Release 0.41 (c) Sebastian Gray 2005-2007 http://www.evolvingsoftware.com/opensebj.html =============================================================================== About: ========== OpenSebJ is a pre and post production music mixing tool; allowing both real-time composition and per-setup replay. This unique mix makes OpenSebJ a creative and versatile audio tool. It is released under the terms of the GNU GPL (included and available at http://www.gnu.org/copyleft/gpl.html) =============================================================================== Version Details: ================ This is an Beta release, it has been released to gather as much feedback as possible. If you have an idea for a new feature, suggestion for improvements, graphics you think would complement the release or you have some samples you are prepared to release under a Creative Commons or a compatible GNU GPL license, then please post your thoughts to the Source Forge message board. =============================================================================== Requirements: ============= Windows(R) 2000 (or better) .Net 2.0 (or better) DX9c (or better) Managed DirectX (October Release) Lots of RAM (Tested with 736 Meg's, will function with less) Lots of CPU (Tested with 1.30GHZ Celeron(R) M, will function with less but the performance is better with more) & Wave samples to play and use =============================================================================== Completed: ========== ----v0.41 Beta----------------------------------------------------------------- Accessibility: + Menu Strips can now accept tab stops; to allow control predominately via the keyboard Sound Device Selection: + Can now be selected at start up. ----v0.4 Beta------------------------------------------------------------------ Beat Box: + Added key preview (Can continue to use the assigned key to tap samples when the beat box tool is selected) Recrd: + Added key preview Pitch Shifter: + Added Key Preview Wave Scratch: + Added key preview Video:` + Added key preview Main Editor + Added key preview + Save button from the menu now functions the same way as the toolbar button save Track Editor: + Displays the origional file name of the sample rather than a position number (CR: 1661564) + Better reuse of the reset button, now resets the waves positions as well as the play cursor (CR: 1661562) + Settings button not displayed until a sample has been loaded (CR: 1671525) + A warning message is now displayed if the play button is pressed with no samples loaded (CR: 1671509) ----v0.3 Beta----------------------------------------------------------------- Another big point release. MDI Interface: + The Ghetto edition shell has been removed and the professional edition has been put in it's place. This change builds a new platform for OpenSebJ to both encourage additional user adoption and allow for future expansion. Save Files: + OpenSebJ save files now save the video, images and samples in to a single .OSJ file. These files can now be distributed as a complete composition; removing reliance on the underlying directory structures. Start sharing those songs.. Track Editor (Previously LayDown): + This new addition contains interface improvements and additional functionality. Sample positions added can now be removed. Windows are re-sizable and scrollable. Video Jockey: + The Video Portal Can now be launched full-screen. Use Alt+Tab to switch between the full screen window and the OpenSebJ editor screens. VJ'ing with OpenSebJ is now a reality. Drum Machine: + The available pattern size has now been increased (supporting a full 8 beats rather than 4) Find Audio Samples: + OpenSebJ now has a link to a full featured, free audio sample search engine. This search engine is also available directly at: http://www.evolvingsoftware.com/sample_search.html If you have a website which you would like to be included in the search index, let us know. ----v0.2 Beta----------------------------------------------------------------- It's a big release and deserves a complete point version increase. VJ: + This release introduces the capability for basic VJ'ing. You can now load and associate videos (.AVI .MPG .WMV .ASF & more) as well as loading static images (.JPG .BMP .PNG & more) and associating them to samples as well. This allows for realtime composition of video to go with the music you master. I.e. if you load a small drum sample you can assign an image to that sample, each time the drum sample is played your image is also displayed. If you want to get more sophisticated then you can load a video. There currently isn't any real limit on the size of the videos but it would generally work better with small clips that then fit better together across the complete work. Included with the download is a small effect video that you can use to try out this capability. To access the new features first click on the Video button on the main OpenSebJ menu. Then after loading your samples click on properties and then set video to assign any image or video to your sample. Video and images will be triggered every time the associated sample is played and as such this feature makes complete use of the other sample triggering methods already available - i.e. assigning samples to keys on the keyboard, the beat pad, the beat box, the lay down window etc. Videos can also be stopped like normal samples through the properties window. As this features is using DirectShow - you can also load MP3's through this window. This will be expanded further in the future but for the time being go to the properties window for a sample you have loaded and then associate the MP3 to the sample instead of a video. (Doesn't work in the image slot as it load's these images as a texture directly.) ----v0.12 Beta----------------------------------------------------------------- Bug Fixes: Wave Graph & Tape N Splice: + Found under Load Samples > Properties > View; the compiler warning presented for the Bitwise OR operation has now been removed - thanks to Alfeu Marcatto for the patch. Scratch: + Previously the sample loaded to the first deck wasn't being set to loop. This has now been resolved. Pitch Shifter Roll: + Initial frequency wasn't being set when enabled was clicked, as such the samples would instead play at their global default frequency as set in the sample setup window. This has now been resolved. Laydown: + Double stop feature implemented, if you press stop once, it will stop playing any new samples and if you press stop a second time any long playing samples still playing will also stop. Beatbox: + Double stop feature implemented, as above. Refactoring: Wave Graph: + Sub project has now been removed (Dependance removed in previous version but the code is now not included in the release). All wave graph visualisation is contained in the classes bufferGraph.cs & frmGraph.cs ----v0.11 Beta----------------------------------------------------------------- New Functionality:: Set keys: + Using and an assigned key will now stop the sample from playing. Scratch: + Cross fader implemented. Sample Properties: + Unckecing 'Loop' now does not stop the sample from playing - it only prevents the sample from re-looping. This is to help live composition utilise the boundaries of samples and not be 100% perfect when stopping samples. Bug Fixes: Scratch: + Checks for loaded sample before allowing play functions to be called. + Playing samples are now stopped when scratch window is closed. ----v0.1 Beta------------------------------------------------------------------ New Functionality:: Wave Graph & Tape N Splice: + Have been combined in to a single tool - this allows the wave form to be viewed and directly controlled; rather than having a single window displaying the waveform and another to scratch with. Oh how sexy. + This function is accesiable from the Load Samples > Properties > View window. Load Samples: + Save laydown positions in composition + Load laydown positions from composition + Save sample properties in composition + Load sample properties from composition + Save Modulation setup in composition + Load Modulation setup from composition + Save KeyAssign setup in composition + Load KeyAssign setup from composition + Save BeatBox positions in composition + Load BeatBox positions from composition Lay Down: + Positions in the lay down window now show the wave form graph. This is shaping up to be a damn sexy release. Pitch Shifter Roll: + Past configurations are now displayed by default when the window is reopened after being closed (or when the configuration is loaded from a file. Beat Box: + Setup so that all samples within the project can be used via the beat box ( Changed check for "checks" to beatBox class array ) ----v0.007--------------------------------------------------------------------- New Functionality:: Beat Box: + A beat box has been added. Standard type of functions, adjustment to the BPM, On-Off initialisation interface for each sample channel. Currently only supports the first 5 samples. + Calculate the ticks per second required for the selected BPM + Select a BMP. Tick = 6000 / BPM. + Each tick advances the position of the ticker by one & then plays the appropriate sample(s) Wave Graph: + Graphing samples on screen has been made possible thanks to the sample code provided by Corinna John ( http://www.binary-universe.net/ ). Bug Fixes:: Scratch: + System.Exception something has now been fixed when trying to fast forward, reverse and all of the other scratch features. This was bug was introduced with the frequency modulation and how now been resolved. + Now have access to all of the loaded samples (previously restricted to all except the last loaded sample). ----v0.006a-------------------------------------------------------------------- 0.06a is an incremental release of 0.06 (with no application code base changes) to address issues of Manage DirectX detection during installation. Pre-requisites are now mandatory, to complete installation - previously the option to complete the installation without the mandatory components was available but this has lead to confusion amongst the wider community. ----v0.006--------------------------------------------------------------------- New Functionality:: Lay Down: + Record sample positions to the current position of the composition play cursor; when they are taped. When using this, make sure that the lay down window is selected. Bug Fixes:: Recording: + "System.NullReferenceException" issue resolved Lay Down: + Window scroll issue resolved ----v0.005--------------------------------------------------------------------- New Functionality:: Pitch Shifter Roll: + Added a pitch shifter roll, allows an order to be setup, so that each time a sample is played the next pitch shift in the sequence is undertaken before the sample is played. I.e. set up a sample to key '1', then setup a pitch shift sequence, high,mid,low,higher etc (using frequency values which are transposed to on screen 'ranges' to allow easier utilisation) + The Pitch Shifter Roll has been configured to be used with all existing tools including, the Beat Pad, Tape N Splice and Key to Sample Setup. Bug Fixes:: Version Checker: + Fixed globalisation issue where a double was used to store the version number. I had never known that people use "," instead of "." for decimal places. Lay Down: + Issue of plays being reloaded after lay down window closed and re-opened fix. Recording: + Closing window issue if no recording objects has been created, causing an exception, has been resolved. ----v0.004--------------------------------------------------------------------- New Functionality:: Version Checker: + OpenSebJ now automatically checks for a new version each time on start up. A small web request is made to the server containing the version number to check if a newer version is available. This is available through the About Box. Recording: + Added the ability to stream an audio recording to disk. The wave audio is at a set quality of 16Bit Stereo 48Khz. The selected channel is controlled via the standard windows audio options. Lay Down: + The play cursor can now be controlled via the mouse, clicking on the back of the window can now set the play cursor to a new position, indicated by the play cursor. + Added a loop cursor point for the lay down composition; once reached play resumes from the beginning. (Currently does not scroll with other components, how big a loop do you need anyway? ;-) DirectX Debug Info: + More detail has been added to the DirectX Debug Info, used to gather more information about the capabilities of the hardware. Bug Fixes:: Lay Down: + Resolved an issue which may of caused an exception when sliding the track bar. + Resolved issue of plays not being played after the window had been closed and re-opened. + Improved performance and stability during playback, only the play cursor is now withdrawn. ----v0.003--------------------------------------------------------------------- New Functionality:: Tape N Splice: + Tape N Splice functionality added, allows for re-positioning of a sample mid-play to any other position within the sample. Multiple Splice windows can be opened at the same time for additional effect. Can simulate scratching and provides interesting effects when used with a reversed sample - try turning the samples frequency all the way up for the best simulated scratch. This was from the idea of "Play samples in reverse without buffer reversal; on the fly (rip reverse)". What happens behind the scenes is that the play position (cursor) is moved to the new, corresponding location of the mouse within the form. I.e. the samples length is relatively stretched across the form and any movement in the form is translated to a new play position in the actual sample - simple eh? Load Samples: + Filter defaults to wave files + Save samples in XML Composition file (currently save is limited to saving the location and order of the samples loaded in to a composition) + Load samples from XML Composition file ----v0.002--------------------------------------------------------------------- New Functionality:: General: + Migrated to Visual Studio .Net 2005 Express (Utilising the .Net Framework, version 2.0) Sample Properties: + Added the set key option Bug Fixes:: Lay Down: + Removed the full screen form action from the double click on the tool bar + Fixed the issue for sample scroll - when the samples reach the 0 sample position, which repositions them to the following sample position. When the most recently added sample was the sample second to the top, and the scroll function was initiated - all samples in the top most position were moved to the second top most position (which was then the top most position). ----v0.001--------------------------------------------------------------------- New Functionality:: Load samples: + Added support for 255 samples Sample Properties: + Set global sample properties + Pan Samples + Loop Samples + Reverse Samples + Set volume for samples + Display Sample information + Pitch shift sample Beat Pad: + Plays selected sample + Allows plays of samples though setup key assignments Set keys: + Set a key to a sample; One or many samples can be setup to play from one key press Lay Down: + Samples can be setup in a graphical overview screen + Lengths of samples determines width of play representation on screen + Set duration of composition (defaults to 3 minutes) + Allows plays of samples though setup key assignments Recording: + Added a record which can be played with the mouse; as if a finger was pressing on the record Scratch: + Allows movement through the sample back and forth using the mouse; =============================================================================== Remaining tasks:: ================= Composition Setup: + Save laydown loop position in composition + Load laydown loop position from composition + Save BeatBox BPM + Load BeatBox BPM Lay Down: + Scroll the loop cursor with the other components =============================================================================== Feature improvement tasks:: =========================== Composition Setup: + Option to save complete setup at once + Option to load complete setup at once Load Samples: + Add a replace sample button + Refactor new sample class to allow for better object encapsulation + Addition of a sample copyright description and choice of license so that a final license can be prepared based on the most restrictive sample license used. I.e. if a sample is Creative Commons Non Commercial then the default composition license will be Creative Commons Non Commercial. + To support attribution, a description of the sample should also be editable when the sample is being loaded or has been loaded. Default contact details (such as artist name, website, email etc.) should be storable along with a free text description of the sample. Sample Properties: + Set up sample play off-set + Set effects on buffers Beat Box: + Allow for separate sample instances within the Beat Box to have different properties Cross Fader: + Brings up/down volume of one sample while applying the reverse action to another sample + Expand the functionality to move the volume for multiple samples as a group (as if they were one sample) Lay Down: + Allow different properties to be set for instance of each 'play' + Check that sample lengths are correct after frequency changed. (This would require that sample property changes are monitored) + Refresh function to redraw plays after modification to frequency for buffer + Scroll the loop cursor with the other components + Option to drop in a Beat Box sequence - as if it was another sample Key Board: + Setup Keyboard to pitch shift samples Scratch: + Set the play speed (pitch) for the sample when no mouse interaction is occurring + Increase stability, better graphics support (D3D?) + Allow multiple fast forward and rewind speeds (to sound more like scratches) + Need to lower CPU utilisation when FF or RW record Scratch Mix Tricks: + Be able to edit the position, rotation, speed, duration, fader controls, to move the 'needle' over a sample and then return on playing + needs to be able to be saved and assigned to a key so that when you que up the record you can hit out a pre made scratch - just that it will use the sample selected to perform the action. VJ: + Video mixing capability coming soon - stay tuned.. + Copy each frame displayed in to an array so that the video can be scratched =============================================================================== Bugs Outstanding:: ================== + None currently known =============================================================================== Past Bugs identified with no new occurances:: ============================================= Lay Down: + When two of the same sample are placed one after the other, an exception can be thrown Scratch: + Need to add try block to all screen drawing and forms updating as the forms dll is being locked. (relates to Scratch) ++ Error relating to dll in use but can't seem to isolate these in try catch blocks ----- Error Message ---- ------------------------------------------------------------------------- {Function evaluation disabled because a previous function evaluation timed out. You must continue execution to reenable function evaluation.} System.InvalidOperationException was unhandled LoaderLock was detected Message: DLL 'C:\WINDOWS\assembly\GAC\Microsoft.DirectX.DirectSound\ 1.0.2902.0__31bf3856ad364e35\Microsoft.DirectX.DirectSound.dll' is attempting managed execution inside OS Loader lock. Do not attempt to run managed code inside a DllMain or image initialization function since doing so can cause the application to hang. ------------------------------------------------------------------------- Lay Down: + Fix up play cursor offset once the scroll position has been increased. =============================================================================== Ideas:: ======= Turntables between samples; including separate volume controls and cross fader; need a start stop type button.